package com.elitel.frame.base.controller;

import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.elitel.frame.base.component.RedisCacheProjectService;
import com.elitel.frame.base.service.SysPrjMenuService;
import com.elitel.frame.main.entity.SysPageui;
import com.elitel.frame.main.entity.SysPrjmenu;
import com.elitel.frame.main.entity.ext.SysPrjmenuExt;
import com.elitel.frame.main.entity.vo.JsonResult;
import com.elitel.frame.main.entity.vo.PageRequestVo;
import com.elitel.frame.main.entity.vo.PageResponseVo;
import com.elitel.frame.main.entity.vo.ZTreeDataModelVo;

@Controller
@RequestMapping("/system/sysPrjMenu")
public class SysPrjMenuController {
	private static final Logger logger = LoggerFactory.getLogger(SysPrjMenuController.class);
	
	@Autowired
	private SysPrjMenuService sysPrjMenuService;
	@Autowired
	private RedisCacheProjectService redisCacheProjectService;
	
	/**
	 * <pre>getMenuConfigData(条件分页获取服务菜单信息)   
	 * @author：FanWenquan    
	 * @date：2017年11月27日 上午10:11:49   
	 * @param pageNo
	 * @param pageSize
	 * @param seachTxt
	 * @return</pre>
	 */
	@RequestMapping("/getMenuConfigData")
	@ResponseBody
	public Object getMenuConfigData(String pageNo, String pageSize, String seachTxt, String pcode, String servicecode){
		JsonResult jr = new JsonResult();
		try {
			PageRequestVo<SysPrjmenu> pr = new PageRequestVo<SysPrjmenu>();
			pr.setSearchContent(seachTxt);
			pr.setPageNo(Integer.valueOf(pageNo));
			pr.setPageSize(Integer.valueOf(pageSize));
			pr.setTreeCode(pcode);
			pr.setContentType(servicecode);
			PageResponseVo<SysPrjmenu> pagelist = sysPrjMenuService.getPrjMenuList(pr);
			jr.setData(pagelist);
			jr.setSuccess(true);
		} catch (Exception e) {
			jr.setSuccess(false);
			jr.setMsg("服务菜单配置信息加载异常！");
			logger.error(e.getMessage(),e);
		}
		return jr;
	}
	
	/**
	 * <pre>getMenuList(根据项目获取菜单)   
	 * @author：FanWenquan    
	 * @date：2017年11月30日 下午6:27:57   
	 * @param pcode
	 * @return</pre>
	 */
	@RequestMapping("/getMenuList")
	@ResponseBody
	public Object getMenuList(String pcode){
		JsonResult jr = new JsonResult();
		try {
			List<SysPrjmenuExt> list = sysPrjMenuService.getMenuList(pcode,"none");
			jr.setSuccess(true);
			jr.setData(list);
		} catch (Exception e) {
			jr.setSuccess(false);
			jr.setMsg("服务菜单信息查询异常！");
			logger.error(e.getMessage(),e);
		}
		
		return jr;
	}
	/**
	 * <pre>insertPrjMenuConfig(添加服务菜单信息)   
	 * @author：FanWenquan    
	 * @date：2017年11月27日 上午10:12:16   
	 * @param sysPrjmenu
	 * @return</pre>
	 */
	@RequestMapping("/insertPrjMenuConfig")
	@ResponseBody
	public Object insertPrjMenuConfig(@RequestBody SysPrjmenu sysPrjmenu){
		JsonResult jr = new JsonResult();
		try {
			sysPrjMenuService.insertPrjMenuConfig(sysPrjmenu);
			jr.setSuccess(true);
			jr.setMsg("服务菜单配置信息添加成功！");
		} catch (Exception e) {
			jr.setSuccess(false);
			jr.setMsg("服务菜单配置信息添加异常！");
			logger.error(e.getMessage(),e);
		}
		
		return jr;
	}
	
	/**
	 * <pre>getPrjMenuByGuid(根据主键获取菜单服务信息)   
	 * @author：FanWenquan    
	 * @date：2017年11月27日 上午10:12:34   
	 * @param guid
	 * @return</pre>
	 */
	@RequestMapping("/getPrjMenuByGuid")
	@ResponseBody
	public Object getPrjMenuByGuid(String guid){
		JsonResult jr = new JsonResult();
		try {
			SysPrjmenuExt sysPrjmenu = sysPrjMenuService.getPrjMenuByGuid(guid);
			jr.setSuccess(true);
			jr.setData(sysPrjmenu);
		} catch (Exception e) {
			jr.setSuccess(false);
			jr.setMsg("获取服务菜单配置信息异常！");
			logger.error(e.getMessage(),e);
		}
		return jr;
	}
	
	/**
	 * <pre>updateProjectConfig(修改菜单服务信息)   
	 * @author：FanWenquan    
	 * @date：2017年11月27日 上午10:12:57   
	 * @param sysPrjmenu
	 * @return</pre>
	 */
	@RequestMapping("/updatePrjMenuConfig")
	@ResponseBody
	public Object updateProjectConfig(@RequestBody SysPrjmenu sysPrjmenu){
		JsonResult jr = new JsonResult();
		try {
			sysPrjMenuService.updatePrjMenuConfig(sysPrjmenu);
			jr.setSuccess(true);
			jr.setMsg("服务菜单配置信息修改成功");
		} catch (Exception e) {
			jr.setSuccess(false);
			jr.setMsg("修改服务菜单信息异常！");
			logger.error(e.getMessage(),e);
		}
		return jr;
	}
	
	/**
	 * <pre>deletePrjMenuConfig(批量删除菜单服务信息)   
	 * @author：FanWenquan    
	 * @date：2017年11月27日 上午10:13:15   
	 * @param guids
	 * @return</pre>
	 */
	@RequestMapping("/deletePrjMenuConfig")
	@ResponseBody
	public Object deletePrjMenuConfig(String guids){
		JsonResult jr = new JsonResult();
		try {
			if(null != guids && !"".equals(guids)){
				sysPrjMenuService.deletePrjMenuConfig(guids);
				jr.setSuccess(true);
				jr.setMsg("服务菜单配置信息删除成功");
			}else{
				jr.setSuccess(false);
				jr.setMsg("请选择要删除的服务菜单配置信息");
			}
		} catch (Exception e) {
			jr.setSuccess(false);
			jr.setMsg("删除服务菜单配置信息异常！");
			logger.error(e.getMessage(),e);
		}
		return jr;
	}
	
	/**
	 * <pre>valPrjMenuCode(校验菜单服务编码)   
	 * @author：FanWenquan    
	 * @date：2017年11月27日 上午10:13:45   
	 * @param menucode
	 * @return</pre>
	 */
	@RequestMapping("/valPrjMenuCode")
	@ResponseBody
	public Object valPrjMenuCode(String menucode, String pcode){
		JsonResult jr = new JsonResult();
		try {
			List<SysPrjmenu> sysPrjmenu = sysPrjMenuService.getPrjMenuByMenucode(menucode,pcode);
			if(null != sysPrjmenu && sysPrjmenu.size()>0){
				jr.setMsg("菜单编码已存在,请重新输入！");
				jr.setSuccess(false);
			} else {
				jr.setSuccess(true);
			}
		} catch (Exception e) {
			logger.error(e.getMessage(),e);
			jr.setMsg("菜单编码校验异常！");
			jr.setSuccess(false);
		}
		return jr;
	}
	
	/**
	 * <pre>getProjectServerTree(获取工程服务树)   
	 * @author：FanWenquan    
	 * @date：2017年11月27日 上午11:33:57   
	 * @return</pre>
	 */
	@RequestMapping("/getProjectServerTree")
	@ResponseBody
	public Object getProjectServerTree(){
		List<ZTreeDataModelVo> list = redisCacheProjectService.getProjectServerTreeList();
		return list;
	}
	
	@RequestMapping("/isNoneMenu")
	@ResponseBody
	public Object isNoneMenu(String guid){
		Boolean val = false;
		try {
			List<SysPrjmenu> list = sysPrjMenuService.getMenuByParent(guid);
			if(null != list && list.size()>0){
				val = false;
			}else{
				val = true;
			}
		} catch (Exception e) {
			logger.error(e.getMessage(),e);
		}
		return val;
	}
	
	/**
	 * <pre>getPagebyPcode(根据项目获取页面)   
	 * @author：FanWenquan    
	 * @date：2017年12月13日 下午2:06:37   
	 * @param pcode
	 * @return</pre>
	 */
	@RequestMapping("/getPagebyPcode")
	@ResponseBody
	public Object getPagebyPcode(String pcode){
		List<SysPageui> list = sysPrjMenuService.getPagebyPcode(pcode);
		return list;
	}
}
